package com.hnu.store.service;

import com.hnu.store.dto.UserDTO;
import com.hnu.store.entity.User;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

public interface IUserService {

  /**
   * 注册一个用户对象
   * @param user 用户信息
   */
  void register(User user);

  /**
   * 发送验证码
   * @param receiver 验证码接收者邮箱
   */
  String sendCaptcha(String receiver);

  /**
   * 登录
   * @param username 用户名
   * @param password 密码
   */
  UserDTO login(String username, String password);

  /**
   * 修改用户信息
   * @param userId 用户ID
   * @param user 用户新信息
   */
  UserDTO changeInformation(Integer userId, User user);

  /**
   * 获取用户信息
   * @param userid 用户id
   */
  User getUserById(Integer userid);

  /**
   * 修改密码
   * @param username 用户名
   * @param password 新密码
   */
  void changePassword(String username,String password);

  /**
   * 设置兴趣标签
   * @param username 用户名
   * @param tag1 标签1
   * @param tag2 标签2
   * @param tag3 标签3
   */
  UserDTO setTags(String username, String tag1, String tag2, String tag3);

  /**
   * 设置钱包
   * @param username 用户名
   * @param pocket 钱包地址
   */
  void setPocket(String username, String pocket);

  /**
   * 设置头像
   * @param id 用户ID
   * @param multipartFile 头像文件
   */
  void setAvatar(Integer id, MultipartFile multipartFile);

  /**
   * 得到头像
   * @param username 用户名
   * @param response HTTP返回体
   */
  void getAvatar(String username, HttpServletResponse response);

  /**
   * 获取用户信息（通过用户昵称）
   * @param username 用户名
   */
  User getUserByUsername(String username);

  /**
   * 身份证实名认证
   * @param front 身份证正面
   * @param negative 身份证反面
   * @param id 用户ID
   */
  void certify(MultipartFile front,MultipartFile negative,Integer id);

  /**
   * 获取实名信息
   * @param username 用户名
   * @param type 类型
   * @param response HTTP返回体
   */
  void getCertification(String username, String type, HttpServletResponse response);

}
